package com.epin.business.system.service;

import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.epin.base.enums.commons.StatusEnum;
import com.epin.base.exception.check.RecordQuoteException;
import com.epin.base.exception.check.RecordRepeatException;
import com.epin.business.system.entity.Company;
import com.epin.business.system.entity.bo.UserNormal;
import com.epin.business.system.entity.vo.CompanyParam;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author fujiajun
 * @since 2017-05-31
 */
public interface CompanyService extends IService<Company> {
	
	/**
	 * <p>公司分页信息</p>
	 * 
	 * @param pageNumber 页数
	 * @param pageSize 每页大小
	 * @param params 参数表
	 * 
	 * <p>
	 * 		可添加数据：
	 * 		<p>keyword：关键词</p>
	 * 		<p>companyId：当前公司ID</p>
	 * 		<p>status：公司状态</p>
	 * </p>
	 * 
	 * @return Page<>
	 * 
	 * @author fujiajun
	 * @since 2017-11-09
	 */
	Page<Company> selectCompaniesPage(int pageNumber, int pageSize, Map<String, Object> params);
	
	
	/**
	 * <p>新增或更新企业信息</p>
	 * <p>抛出记录重复异常</p>
	 * 
	 * @param id 公司ID
	 * @param cParam 公司参数
	 * @param operator 当前操作人员
	 * 
	 * @return boolean
	 * @throws RecordRepeatException
	 * 
	 * @author fujiajun
	 * @since 2017-11-09
	 */
	boolean insertOrUpdateCompany(Integer id, CompanyParam cParam, UserNormal operator) throws RecordRepeatException;
	
	
	/**
	 * <p>批量删除公司</p>
	 * <p>抛出记录被引用异常</p>
	 * 
	 * @param ids 公司id数组
	 * 
	 * @return boolean
	 * @throws RecordQuoteException
	 * 
	 * @author fujiajun
	 * @since 2017-11-09
	 */
	boolean deleteCompaniesByIds(List<Integer> ids) throws RecordQuoteException;
	
	
	/**
	 * <p>根据公司id作废或取消作废公司</p>
	 * 
	 * @param ids 公司id数组
	 * @param status 要修改的目标状态
	 * @param operator 当前操作人员
	 * 
	 * @return boolean
	 * 
	 * @author fujiajun
	 * @since 2017-11-09
	 */
	boolean cancelCompaniesByIds(List<Integer> ids, StatusEnum status, UserNormal operator);
	
	
}
